# -*- coding: utf-8 -*-
"""
测试DEMO - 主URL配置文件

本文件是测试DEMO后端的主要URL路由配置，定义了系统的API端点结构：

1. API根路径 ('/')
   - 提供系统基本信息和API端点导航
   - 返回JSON格式的API文档
   - 包含版本信息和所有可用端点列表

2. 管理后台 ('/admin/')
   - Django内置管理界面
   - 用于系统管理和数据维护
   - 需要超级用户权限访问

3. 用户认证模块 ('/api/auth/')
   - 用户注册、登录、注销
   - 用户信息管理
   - 风险评估相关接口
   - 路由到 users.urls

4. 金融产品模块 ('/api/products/')
   - 产品信息查询和管理
   - 产品分类和筛选
   - 产品价格和业绩数据
   - 路由到 products.urls

5. 投资组合模块 ('/api/portfolios/')
   - 投资组合创建和管理
   - 持仓信息和交易记录
   - 资产配置和再平衡
   - 止损设置和监控
   - 绩效分析和风险评估
   - 路由到 portfolios.urls

6. 数据服务模块 ('/api/data/')
   - 外部数据源管理
   - 数据同步任务
   - 基金和市场数据获取
   - AKShare数据接口
   - 路由到 data_service.urls

7. 管理后台模块 ('/api/admin/')
   - 系统管理功能
   - 用户权限管理
   - 系统监控和日志
   - 路由到 admin_management.urls

8. Token认证 ('/api-token-auth/')
   - DRF Token认证端点
   - 用于获取API访问令牌
   - 支持前端应用的无状态认证

API设计原则：
- RESTful风格的URL设计
- 统一的'/api/'前缀
- 模块化的路由组织
- 清晰的资源层次结构

认证方式：
- Session认证（Web界面）
- Token认证（API调用）
- 支持跨域请求（CORS）

版本控制：
- 当前版本：v1.0.0
- 未来可通过URL版本化支持多版本API
- 建议格式：/api/v1/, /api/v2/

安全考虑：
- 所有API端点默认需要认证
- CSRF保护（Session认证）
- 权限控制在各模块内部实现
- 敏感操作需要额外权限验证

Author: zhaozeliang
Date: 2025-09-06
"""
from django.contrib import admin
from django.urls import path, include
from django.http import JsonResponse
from rest_framework.authtoken.views import obtain_auth_token

def api_root(request):
    """API根路径视图"""
    return JsonResponse({
        'message': '测试DEMOAPI',
        'version': '1.0.0',
        'endpoints': {
            'auth': '/api/auth/',
            'products': '/api/products/',
            'portfolios': '/api/portfolios/',
            'data': '/api/data/',
            'admin': '/api/admin/',
            'token_auth': '/api-token-auth/',
        }
    })

urlpatterns = [
    path('', api_root, name='api_root'),
    path('admin/', admin.site.urls),
    path('api/auth/', include('users.urls')),
    path('api/products/', include('products.urls')),
    path('api/portfolios/', include('portfolios.urls')),
    path('api/data/', include('data_service.urls')),
    path('api/admin/', include('admin_management.urls')),
    path('api-token-auth/', obtain_auth_token, name='api_token_auth'),
]
